using System;
using System.Collections.Generic;
using System.Text;

namespace Toenda.Foundation.Globalization.Holiday {
	/// <summary>
	/// Describes how the Holiday should be implemented
	/// </summary>
	public interface IHolidayCalendarFactory {
		/// <summary>
		/// gets or sets the current year
		/// </summary>
		int CurrentYear { get; set; }

		/// <summary>
		/// Gets or sets the event type
		/// </summary>
		HolidayEventType EventType { get; set; }

		/// <summary>
		/// Gets a list of variable holidays
		/// </summary>
		List<Holiday> VariableHolidays { get; }

		/// <summary>
		/// Gets a list of fixed holidays
		/// </summary>
		List<Holiday> FixedHolidays { get; }

		/// <summary>
		/// Checks if a date is a holiday
		/// </summary>
		/// <param name="eventType"></param>
		/// <param name="value"></param>
		/// <returns></returns>
		bool IsHoliday(HolidayEventType eventType, DateTime value);

		/// <summary>
		/// Checks if a date is a holiday
		/// </summary>
		/// <param name="value"></param>
		/// <returns></returns>
		bool IsHoliday(DateTime value);

		/// <summary>
		/// Get a holiday object for a date
		/// </summary>
		/// <param name="value"></param>
		/// <returns></returns>
		Holiday GetHolidayName(DateTime value);

		/// <summary>
		/// Initializes the class
		/// </summary>
		/// <param name="eventType"></param>
		void Initialize(HolidayEventType eventType);
	}
}
